import openai
import logging
from config.config import AI_API_BASE, AI_API_KEY, AI_MODEL

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)


class AIService:
    def __init__(self):
        self.client = openai.OpenAI(
            api_key=AI_API_KEY,
            base_url=AI_API_BASE
        )
        logger.info(f"AI服务初始化完成，使用模型: {AI_MODEL}")

    def get_clothing_advice(self, indoor_data, outdoor_data, is_weekend=False):
        """获取穿衣建议"""
        # 构建提示词
        prompt = self._build_prompt(indoor_data, outdoor_data, is_weekend)

        try:
            logger.info("正在请求AI建议...")
            response = self.client.chat.completions.create(
                model=AI_MODEL,
                messages=[
                    {"role": "system","content": "你是一个专业的穿衣顾问，请根据室内外温度、湿度等数据，给出合适的穿衣建议。"},
                    {"role": "user", "content": prompt}
                ],
                temperature=0.7,
                stream=False
            )

            advice = response.choices[0].message.content
            logger.info("成功获取AI建议")
            return advice

        except Exception as e:
            logger.error(f"获取AI建议出错: {str(e)}")
            return "抱歉，获取穿衣建议时出现错误。"

    def _build_prompt(self, indoor_data, outdoor_data, is_weekend):
        """构建AI提示词"""
        return f"""
当前环境数据如下：

室内环境：
- 温度：{indoor_data['temperature']:.1f}°C
- 湿度：{indoor_data['humidity']:.1f}%
- 气压：{indoor_data.get('pressure', 'N/A')} hPa

室外环境：
- 温度：{outdoor_data['temperature']}°C
- 湿度：{outdoor_data['humidity']}%
- 天气：{outdoor_data['weather']}
- 风向：{outdoor_data['winddirection']}
- 风力：{outdoor_data['windpower']}

今天是{'周末' if is_weekend else '工作日'}。
请根据以上数据，给出简洁的穿衣建议，包括：
1. 建议穿着的衣物类型
2. 是否需要携带雨具
3. 其他注意事项

请用通俗易懂的语言回答，不要出现任何英文字母和符号，只要中文。控制在100字以内。
"""